package Test_0509;

import java.util.Arrays;

/**
 * Created with Intellij IDEA
 * Description:
 * User: 星辰
 * Dare: 2024-05-08
 * Time: 23:55
 */
public class Test_0509 {
    /*递归求解汉诺塔问题*/

    public static void move(char a,char b) {
        System.out.println(a+"->"+b);
    }
    public static void hrt(int n,char a,char b,char c) {
        if(n==1){
            move(a,c);
        }
        else {
            hrt(n-1,a,c,b);
            move(a,c);
            hrt(n-1,b,a,c);
    }
    }
    public static void main(String[] args) {
        hrt(3,'A','B','C');
    }
    /* 给定一个大小为 n 的数组，找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
    你可以假设数组是非空的，并且给定的数组总是存在多数元素。*/
   public static void main2(String[] args) {
       int[] n=new int[]{1,1,1,2,2,2,2,3,3,3,2,2,2};
       int ret=n[0];
       int count=0;
       for (int i = 0; i < n.length; i++) {
           if(ret==n[i]){
               count++;
           }
           else{
               count--;
           }
           if(count<=0){
               ret=n[i+1];
           }
       }
       System.out.println(ret);
   }
    /* 调整数组顺序使得奇数位于偶数之前。调整之后，不关心大小顺序。
 如数组：[1,2,3,4,5,6]
 调整后可能是：[1, 5, 3, 4, 2, 6]*/
    public static void main1(String[] args) {
        int[] num=new int[]{1,5,8,9,10,22,3};
        int left=0;
        int right = num.length - 1;
        while(left<right) {
            if (num[left] % 2 == 1) {
                left++;
                continue;
            }
            if (num[right] % 2 == 1) {
                int tmp = 0;
                tmp = num[right];
                num[right] = num[left];
                num[left] = tmp;
                left++;
                right--;
            }
            else{
                right--;
            }
        }
        System.out.println(Arrays.toString(num));
    }
}
